﻿// 引入项目所需的命名空间
using Can_Test.窗体界面;  // 引入自定义的窗体界面命名空间，包含登录窗体等界面类
using System;            // 引入系统核心命名空间，包含基础类型和基础类
using System.Collections.Generic;  // 引入泛型集合命名空间
using System.Linq;       // 引入LINQ查询命名空间
using System.Threading.Tasks;  // 引入异步任务命名空间
using System.Windows.Forms;  // 引入Windows窗体应用程序命名空间，包含Application等核心类
using VisionAbout;      // 引入视觉相关功能命名空间

// 定义项目的根命名空间
namespace Vision_about
{
    /// <summary>
    /// 程序主入口类
    /// 包含应用程序的启动和配置逻辑
    /// 使用static修饰符，表示该类为静态类，不能被实例化
    /// </summary>
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点方法
        /// 这是程序执行的起点，当应用程序启动时首先执行此方法
        /// 
        /// STAThread特性说明：
        /// STAThread（单线程单元）是Windows窗体应用程序必需的属性
        /// 它指定COM组件在线程中运行的模式为单线程单元
        /// 这对于使用剪贴板、拖放功能、文件对话框等COM组件的Windows窗体应用至关重要
        /// 如果没有此属性，可能会导致COM相关的功能异常
        /// </summary>
        [STAThread]  // 指定应用程序的线程模型为单线程单元（Single-Threaded Apartment）
        static void Main()  // 静态主方法，程序执行入口点，无参数版本
        {
            // 启用应用程序的可视样式
            // 这会使控件使用Windows XP/Vista/7等系统的视觉样式
            // 如果不调用此方法，控件将使用经典的Windows 95/98样式
            Application.EnableVisualStyles();

            // 设置应用程序的文本渲染兼容性模式为默认值
            // false表示使用GDI+文本渲染引擎，提供更好的文本显示效果
            // 如果设置为true，则使用GDI文本渲染（兼容旧版本）
            // 这会影响所有窗体和控件的文本显示方式
            Application.SetCompatibleTextRenderingDefault(false);

            // 启动应用程序的主消息循环，并显示指定的启动窗体
            // 这里创建Login_NoSQL窗体实例作为应用程序的启动窗口
            // Application.Run方法会启动Windows消息泵，使应用程序能够响应用户操作和系统消息
            // 该方法会阻塞，直到主窗体关闭，此时应用程序退出
            Application.Run(new Login_NoSQL());

            // 注意：Application.Run方法之后的代码只有在主窗体关闭后才会执行
            // 可以在此处添加应用程序退出前的清理逻辑
        }
    }
}